Previous Book Contents Book Index Next

Inside Macintosh: 3D Graphics Programming With QuickDraw 3D /
Chapter 15 - Pick Objects


Summary of Pick Objects

C Summary

Constants

#define kQ3ReturnAllHits                  0

Pick Object Types

#define kQ3PickTypeWindowPoint         Q3_OBJECT_TYPE('p','k','w','p')
#define kQ3PickTypeWindowRect          Q3_OBJECT_TYPE('p','k','w','r')

Shape Part and Mesh Part Types

#define kQ3ShapePartTypeMeshPart       Q3_OBJECT_TYPE('s','p','m','h')
#define kQ3MeshPartTypeMeshFacePart    Q3_OBJECT_TYPE('m','f','a','c')
#define kQ3MeshPartTypeMeshEdgePart    Q3_OBJECT_TYPE('m','e','d','g')
#define kQ3MeshPartTypeMeshVertexPart  Q3_OBJECT_TYPE('m','v','t','x')

Hit List Sorting Values

typedef enum TQ3PickSort {
   kQ3PickSortNone,
   kQ3PickSortNearToFar,
   kQ3PickSortFarToNear
} TQ3PickSort;

Hit Information Masks

typedef enum TQ3PickDetailMasks {
   kQ3PickDetailNone                               = 0,
   kQ3PickDetailMaskPickID                         = 1 << 0,
   kQ3PickDetailMaskPath                           = 1 << 1,
   kQ3PickDetailMaskObject                         = 1 << 2,
   kQ3PickDetailMaskLocalToWorldMatrix             = 1 << 3,
   kQ3PickDetailMaskXYZ                            = 1 << 4,
   kQ3PickDetailMaskDistance                       = 1 << 5,
   kQ3PickDetailMaskNormal                         = 1 << 6,
   kQ3PickDetailMaskShapePart                      = 1 << 7} 
TQ3PickDetailMasks;

Pick Parts Values

typedef enum TQ3PickPartsMasks {
   kQ3PickPartsObject                        = 0,
   kQ3PickPartsMaskFace                      = 1 << 0,
   kQ3PickPartsMaskEdge                      = 1 << 1,
   kQ3PickPartsMaskVertex                    = 1 << 2
} TQ3PickPartsMasks;

Data Types

typedef unsigned long                        TQ3PickDetail;
typedef unsigned long                        TQ3PickParts;
typedef TQ3ShapePartObject                   TQ3MeshPartObject;
typedef TQ3MeshPartObject                    TQ3MeshFacePartObject;
typedef TQ3MeshPartObject                    TQ3MeshEdgePartObject;
typedef TQ3MeshPartObject                    TQ3MeshVertexPartObject;

Pick Data Structure

typedef struct TQ3PickData {
   TQ3PickSort                sort;
   TQ3PickDetail              mask;
   unsigned long              numHitsToReturn;
} TQ3PickData;

Window-Point Pick Data Structure

typedef struct TQ3WindowPointPickData {
   TQ3PickData                data;
   TQ3Point2D                 point;
   float                      vertexTolerance;
   float                      edgeTolerance;
} TQ3WindowPointPickData;

Window-Rectangle Pick Data Structure

typedef struct TQ3WindowRectPickData {
   TQ3PickData                data;
   TQ3Area                    rect;
} TQ3WindowRectPickData;

Hit Path Structure

typedef struct TQ3HitPath {
   unsigned long              depth;
   TQ3GroupPosition           *positions;
} TQ3HitPath;

Hit Data Structure

typedef struct TQ3HitData {
   TQ3PickParts               part;
   TQ3PickDetail              validMask;
   unsigned long              pickID;
   TQ3HitPath                 path;
   TQ3Object                  object;
   TQ3Matrix4x4               localToWorldMatrix;
   TQ3Point3D                 xyzPoint;
   float                      distance;
   TQ3Vector3D                normal;
   TQ3ShapePartObject         shapePart;
} TQ3HitData;

Pick Objects Routines

Managing Pick Objects

TQ3ObjectType Q3Pick_GetType(TQ3PickObject pick);
TQ3Status Q3Pick_GetData(TQ3PickObject pick, TQ3PickData *data);
TQ3Status Q3Pick_SetData(TQ3PickObject pick, const TQ3PickData *data);
TQ3Status Q3Pick_GetVertexTolerance (
TQ3PickObject pick, float *vertexTolerance);
TQ3Status Q3Pick_SetVertexTolerance (
TQ3PickObject pick, float vertexTolerance);
TQ3Status Q3Pick_GetEdgeTolerance (
TQ3PickObject pick, float *edgeTolerance);
TQ3Status Q3Pick_SetEdgeTolerance (
TQ3PickObject pick, float edgeTolerance);
TQ3Status Q3Pick_GetNumHits(TQ3PickObject pick, unsigned long *numHits);
TQ3Status Q3Pick_GetHitData(TQ3PickObject pick, 
unsigned long index, 
TQ3HitData *hitData);
TQ3Status Q3Hit_EmptyData(TQ3HitData *hitData);
TQ3Status Q3Pick_EmptyHitList(TQ3PickObject pick);

Managing Shape Parts and Mesh Parts

TQ3Status Q3ShapePart_GetShape(TQ3ShapePartObject shapePartObject, 
TQ3ShapeObject *shapeObject);
TQ3ObjectType Q3ShapePart_GetType (
TQ3ShapePartObject shapePartObject);
TQ3ObjectType Q3MeshPart_GetType (
TQ3MeshPartObject meshPartObject);
TQ3Status Q3MeshPart_GetComponent (
TQ3MeshPartObject meshPartObject, 
TQ3MeshComponent *component);
TQ3Status Q3MeshFacePart_GetFace (
TQ3MeshFacePartObject meshFacePartObject, 
TQ3MeshFace *face);
TQ3Status Q3MeshEdgePart_GetEdge (
TQ3MeshEdgePartObject meshEdgePartObject, 
TQ3MeshEdge *edge);
TQ3Status Q3MeshVertexPart_GetVertex (
TQ3MeshVertexPartObject meshVertexPartObject, 
TQ3MeshVertex *vertex);

Picking With Window Points

TQ3PickObject Q3WindowPointPick_New (
const TQ3WindowPointPickData *data);
TQ3Status Q3WindowPointPick_GetPoint (
TQ3PickObject pick, TQ3Point2D *point);
TQ3Status Q3WindowPointPick_SetPoint (
TQ3PickObject pick, const TQ3Point2D *point);
TQ3Status Q3WindowPointPick_GetData (
TQ3PickObject pick, 
TQ3WindowPointPickData *data);
TQ3Status Q3WindowPointPick_SetData (
TQ3PickObject pick, 
const TQ3WindowPointPickData *data);

Picking With Window Rectangles

TQ3PickObject Q3WindowRectPick_New (
const TQ3WindowRectPickData *data);
TQ3Status Q3WindowRectPick_GetRect (
TQ3PickObject pick, TQ3Area *rect);
TQ3Status Q3WindowRectPick_SetRect (
TQ3PickObject pick, const TQ3Area *rect);
TQ3Status Q3WindowRectPick_GetData (
TQ3PickObject pick, 
TQ3WindowRectPickData *data);
TQ3Status Q3WindowRectPick_SetData (
TQ3PickObject pick, 
const TQ3WindowRectPickData *data);

Warnings
kQ3WarningPickParamOutside 


Previous Book Contents Book Index Next

© Apple Computer, Inc.
11 JUL 1996